#pragma once

class Match;

class PointCalculator {
public:
  enum TableType { t210=1, t310, t3210};
  PointCalculator() {}
  virtual ~PointCalculator() {}

  static PointCalculator* GetCalculator(TableType type);

  virtual int Calculate(Match& match) const =0;

private:
  virtual int Win() const =0;
  virtual int Draw() const =0;
  virtual int Loss() const =0;
  virtual int Extended() const =0;
};